package cn.chinaunicom.sdsi.frm.workflow.task.dao;

import java.util.List;
import java.util.Map;

/**
 * 框架增强activiti的配置表-访问层接口
 * 
 * @author liyh
 */
public interface FlowCfgDao {

	/**
	 * 根据配置表得到无条件的URL路径
	 * 
	 * @param processDefinitionId
	 *            流程定义数据主键
	 * @param processDefinitionKey
	 *            流程定义key
	 * @param taskDefinitionKey
	 *            任务定义key
	 * @param taskTodo
	 *            是否为待办路径，反之为已办
	 * @return 路径结果集
	 */
	Map<String, Object> getTaskCustomUrl(String processDefinitionId, String processDefinitionKey,
			String taskDefinitionKey, boolean taskTodo);

	/**
	 * 根据流程定义获取首环节任务定义
	 * 
	 * @param processDefinitionKey
	 *            流程定义Key
	 * @return 任务定义结果集
	 */
	String getStartTaskKey(String processDefinitionId, String processDefinitionKey);

	/**
	 * 据指定条件获取可到达环节信息
	 * 
	 * @param processDefinitionId
	 *            流程定义唯一信息
	 * @param processDefinitionKey
	 *            流程定义key
	 * @param taskDefinitionKey
	 *            任务定义key
	 * @param pathSelect
	 *            路径选择
	 * @param handleType
	 *            处理类型
	 * @return 包含目标环节定义key、目标环节名称及是否可撤回
	 */
	List<Map<String, Object>> getLinkIds(String processDefinitionId, String processDefinitionKey,
			String taskDefinitionKey, int pathSelect, int handleType);

	/**
	 * 根据流程定义及环节定义查找
	 * 
	 * @param processDefinitionId
	 *            流程定义数据主键
	 * @param taskDefinitionKey
	 *            环节定义KEY
	 * @return 标签url集合
	 */
	List<Map<String, Object>> getTabUrls(String processDefinitionId, String taskDefinitionKey);

	/**
	 * 获取任务详细页面环节出行及按钮显隐配置
	 * 
	 * @param processDefinitionKey
	 *            流程定义Key
	 * @param taskDefinitionKey
	 *            任务定义Key
	 * @return 按钮显隐信息
	 */
	Map<String, Object> getLinkCfg(String processDefinitionKey, String taskDefinitionKey);
}
